//负责操作localStorage的帮助文件

/***
 * 获取数据 localStorage
 * 添加数据和追加数据
 * 移除数据
 */

//1.0 定义常量key, 将来操作的localStorage中的数据都以这个key来作为标识的。
export const KEY = 'goodsdata';
//被外部操作的obj
export var valueObj = {goodsid:0, count:0};

//2.0实现数据的增加
//value是一个标准的json字符串
/**
 *
 * @param value  格式{goodsid: 87, count:10}
 *
 */
export function setItem(value) {
    //1.0 获取json格式
    //value是一个标准的json字符串
    var jsonString = localStorage.getItem(KEY);

    //判断jsonString是否为空，如果为空，则赋值一个空的[]数组
    jsonString = jsonString || '[]';
    var arr = JSON.parse(jsonString);
    //2.0 将value追加记录
    arr.push(value);

    //3.0将arr转换成json字符串保存起来
    localStorage.setItem(KEY, JSON.stringify(arr));
}


//3.0实现数据的获取
/**
 * 根据KEY获取对象
 *
 * @param KEY
 * @returns {any}
 */
export function getItem() {
    //value是一个标准的json字符串
    var jsonString = localStorage.getItem(KEY);
    //判断jsonString是否为空，如果为空，则赋值一个空的[]数组
    jsonString = jsonString || '[]';

    return JSON.parse(jsonString);

}
//4.0实现数据的移除
/**
 * 根据KEY移除数据 * @param value
 */
export function removeItem(goodsid) {
    var arr = getItem();
    //茶轴arr中的goodsid和传入的参数goodsid一一致的数据全部移除
    for (var i = arr.length-1 ; i >=0; i--) {
        if(arr[i].goodsid == goodsid){
            arr.splice(i, 1);
        }
    }
    localStorage.setItem(KEY, JSON.stringify(arr));
}



//5. 将localstorage中的数据全部整合成一个对象的形式
/***
 格式：{
    商品id值：商品购买数量,
    商品id值：商品购买数量,
    商品id值：商品购买数量,
 },
 真正的数据是：{
    87:4,
    88:5
 }
 */
export function getgoodsObject() {
    //1. 获取数组
    /**
     * 格式: [
     *     {goodsid:87, count:1},
     *     {goodsid:87, count:2},
     *     {goodsid:87, count:2},
     *     {goodsid:87, count:2},
     *     {goodsid:88, count:3},
     * ]
     * @type {any}
     */
    var arr = getItem();
    var resObj = {};

    //2. 将arr数组中的goodid相同的多个对象合并成一个对象
    for(var i = 0; i < arr.length; i++) {
        var item = arr[i];
        if(!resObj[item.goodsid]) {
            //遍历的时候，如果没有当前商品的数据，则添加一个数据
            resObj[item.goodsid] = item.count;
        } else {
            //已经有商品的数据了，将count增加
            var count = resObj[item.goodsid];
             resObj[item.goodsid] = count + item.count;
        }
    }

    //3.返回
    return resObj;
}


/**
 * obj格式 {goodsid: 87, type:'add'}
 * @param obj
 */
export function updateData(obj) {
    var arr = getItem();
    var count = 1;

    if (obj.type == 'add') {
        arr.push({goodsid:obj.goodsid, count: count});
    } else {
        for(var i = 0; i < arr.length; i++) {
            //如果这个对象的count值为1，则删除这个对象，否则将这个对象的count减1以后保存回去
            if(arr[i].goodsid == obj.goodsid) {
                if (arr[i].count > 1) {
                    arr[i].count--;
                    break;
                }else {
                    //删除此对象
                    arr.splice(i, 1);
                    break;
                }
            }
        }
    }

    //更新后保存
    localStorage.setItem(KEY, JSON.stringify(arr));
}

/**
 * 获取所有的数量
 */
export function gettotalcount() {
    var arr = getItem();
    var totalcount= 0;
    arr.forEach(function (item) {
        totalcount += item.count;
    })

    return totalcount;
}

